package com.yidu.ladder.system.dao;

import java.util.List;
import java.util.Map;

import com.yidu.ladder.base.domain.Role;
import com.yidu.ladder.base.domain.RoleVo;
import com.yidu.ladder.system.domain.Resource;
import com.yidu.ladder.system.domain.RoleRsource;
import com.yidu.ladder.system.domain.User;
import com.yidu.ladder.system.domain.UserRole;
import com.yidu.ladder.system.domain.UserVo;


/**
 * 权限数据访问层
 * @author ld
 *
 */
public interface PowerDao {
	
	/**
	 * 查询用户带条件
	 * @param roleVo
	 * @return
	 */
	public abstract List<User> findUserSelective(UserVo userVo);
	
	/**
	 * 查询角色带条件
	 * @return
	 */
	public abstract List<Role> findRoleSelective(RoleVo roleVo);
	
	/**
	 * 查询用户数量
	 * @param roleVo
	 * @return
	 */
	public abstract int findUserCount(UserVo userVo);
	
	/**
	 * 查询角色数量
	 * @param roleVo
	 * @return
	 */
	public abstract int findRoleCount(RoleVo roleVo);
	
	/**
	 * 查询用户拥有的角色根据用户ID
	 * @param userId
	 * @return
	 */
	public abstract List<String> findUserHasRoleIdByUserId(String userId);
	
	/**
	 * 查询角色拥有的资源根据角色ID
	 * @param roleId
	 * @return
	 */
	public abstract List<String> findRoleHasResourceIdByRoleId(String roleId);
	
	/**
	 * 删除用户拥有角色根据用户ID和角色ID
	 * @param paramMap
	 * @return
	 */
	public abstract int deleteUserRoleByURId(Map<String, Object> paramMap);
	
	/**
	 * 删除角色拥有资源根据角色ID
	 * @param roleId
	 * @return
	 */
	public abstract int deleteRoleResourceByRoleId(String roleId);
	
	/**
	 * 添加用户角色
	 * @param userRole
	 * @return
	 */
	public abstract int insertUserRole(List<UserRole> userRoleList);
	
	/**
	 * 添加角色资源
	 * @param roleId
	 * @return
	 */
	public abstract int insertRoleResource(List<RoleRsource> roleRsourceList);
	
	/**
	 * 查询所有角色
	 * @return
	 */
	public abstract List<Role> findAllRole();
	
	/**
	 * 查询所有资源
	 * @return
	 */
	public abstract List<Resource> findAllResource();
	
	/**
	 * 查询资源根据用户ID
	 * @param userId
	 * @return
	 */
	public abstract List<Resource> findResourceByUserId(String userId);
	
	/**
	 * 查询按钮资源名根据用户ID和父资源名
	 * @param map
	 * @return
	 */
	public abstract List<String> findBtnResourceByUserIdAndResourceName(Map<String, String> map);
}
